1. Field of the Invention
The present invention relates generally to computer graphics and more particularly to polymorphic manipulation of pixel memory.
2. Summary of the Related Art
Computer pictures or images drawn on a computer screen are called computer graphics. Computer graphic systems store graphics internally in digital form. The picture is broken up into tiny picture elements or pixels. Thus a computer picture or graphic is actually an aggregation of individual picture elements or pixels. Internally, in the digital world of the computer, each pixel is assigned a set of digital values which represent the pixel's attributes. A pixel's attributes may describe its color, intensity and location, for example. Thus to change the color, intensity or location of a pixel, one simply changes the digital values for that particular attribute.
Conventional computer graphic systems utilize primitives known as images, bitmaps or pixel maps to represent computer imagery as a aggregation of pixels. These primitives represent a 2-dimensional array of pixel attributes and their respective digital values. Typically, such a primitive is expressed as a "struct" (data structure) that contains a pointer to pixel data, a pixel size, scanline size, bounds, and possibly a reference to a color table. Quite often, the pixels are assumed to represent Red, Green, and Blue (RGB) color, luminance, or indices into a color table. Thus, the primitive serves double duty as a framebuffer and as a frame storage specification.
The burgeoning computer graphics industry has settled on a defacto standard for pixel representation. All forms of images that do not fit into this standard are forced into second class citizenship. Conventional graphics systems, however, are nonextendable. They are usually dedicated to a particular application operating on a specific class of images. This is unacceptable in today's rapidly changing environment of digital technology. Every day seems to bring a new application, and with it the need to process and manipulate new image types in new ways. Thus, the use of a graphics system with a nonextensible graphic specification is not only short sighted, it is in a word, obsolete.
Graphical applications, attributes, and organizational requirements for pixel memory are diverse and expanding. Thus, dedicated single-purpose graphics system fail to meet current user's needs. There is a need for a robust graphic system that provides a dynamic environment and an extensible graphic specification that can expand to include new applications, new image types and provide for new pixel manipulations.
For example, two applications rarely require the same set of pixel attributes. 3-Dimensional applications store z values (depth ordering), while animation and paint systems store alpha values. Interactive material editors and 3-Dimensional paint programs store 3-Dimensional shading information, while video production systems may require YUV 4:2:2 pixel arrays. Hardware clippers store layer tags, and sophisticated systems may store object IDs for hit detection. Moreover, graphical attributes such as color spaces are amassing constant additions, such as PhotoYCC.TM.. Color matching technology is still evolving and it is yet unclear at to what quantized color space is best for recording the visible spectrum as pixels. Thus there is a variety of data types in the graphics world. There are also a variety of storage organization techniques.
To make matters even worse, it seems that every new application requires a different organization for the pixel memory. For example, Component Interleaved or "Chunky" scanline orientations are the prevailing organization in Macintosh.RTM. video cards, but Component Interleaved banked switched memory is the trend in video cards targeted for hosts with small address spaces. Component planar tiles and component interleaved tiles are the trend in prepress and electronic paint programs, but output and input devices which print or scan in multiple passes prefer a component planar format. Multiresolution or pyramid formats are common for static images that require real-time resampling. Moreover, images that consume large amounts of memory may be represented as compressed pixel data which can be encoded in a multitude of ways.
The variety and growth of graphic applications, data types and pixel memory manipulations is very large. There is a requirement for a multipurpose system that can handle all the known applications and expand to handle those applications that are yet unknown. A single program solution is impractical. Although it may handle every known requirement, it would be huge and unwieldy. However, if such a program is downsized, it can no longer handle every application.
Alternatively, the functions can be separated into smaller programs. One can end up with an undesirable number of individual programs following this technique. And how does one decide which function to place in a given program. Which program should contain the requirements for user one? How about user two? Thus, there is a need for a general purpose program that suits the needs of many users, but allows the individual user to customize and add to the general purpose program so that it meets her particular need.